package leetcode_161_180;

public class compareVersion_165 {
    public int compareVersion(String version1, String version2) {
        /**
         * 顺序提取比较修订号
         * 一方已经遍历完时仍然相等，判断另一方的剩余部分是否等于0即可
         * 0ms
         */
        int v1=0,v2=0;
        int v1_len=version1.length(),v2_len=version2.length();
        while(v1<v1_len && v2<v2_len){
            //去掉前导0
            while(v1!=v1_len && version1.charAt(v1)=='0')
                v1++;
            while(v2!=v2_len && version2.charAt(v2)=='0')
                v2++;
            //提取当前位置的修订号
            int v1Num=0;
            while(v1!=v1_len && version1.charAt(v1)!='.')
                v1Num=v1Num*10+version1.charAt(v1++)-'0';
            int v2Num = 0;
            while (v2!=v2_len && version2.charAt(v2) != '.')
                v2Num = v2Num * 10 + version2.charAt(v2++) - '0';

            if(v1Num>v2Num)
                return 1;
            else if(v1Num<v2Num)
                return -1;
            else {
                v1++;
                v2++;
            }
            //当v2未遍历完时，只需要判断后边是否出现了非0和.的字符即可
            if(v1>=v1_len && v2<v2_len){
                while (v2 != v2_len){
                    if (version2.charAt(v2) != '0' && version2.charAt(v2) != '.' )
                        return -1;   //version2更大
                    v2++;
                }
            }

            if(v2>=v2_len && v1<v1_len){
                while (v1 != v1_len){
                    if (version1.charAt(v1) != '0' && version1.charAt(v1) != '.' )
                        return 1;
                    v1++;
                }
            }
        }
        return 0;
    }
}
